-- HeroUtil
-- Create by luohj Jan/7/2015
-- 画各种控件

------------------------------------------------------------------
-- @param scrollView        滚动容器
-- @param itemPath          需要加载item节点的路径
-- @param topHGap           顶部的间隙
-- @param leftWGap          item左边的间隙
-- @param itemWGap          item横向间距
-- @param itemHGap          item纵向间距
-- @param itemH             item的高度
-- @param itemW             item的宽度
-- @param maxGridColumn     一行最大的格数
-- @param totalNum          item总个数
-- @param data              附加数据
function drawScrollView(point, scrollView, itemPath, topHGap, leftWGap, itemWGap, itemHGap, itemW, itemH, maxGridColumn, totalNum, itemName)
    -- 清空旧数据
    scrollView.rows = {};
    scrollView:removeAllChildren();

    --总行数
    local tLineCount = math.ceil(totalNum / maxGridColumn);

    -- 先计算总高度
    local totalHeight = tLineCount * (itemH + itemHGap) - itemHGap + (topHGap * 2);

    -- 设置滚动区域的尺寸
    scrollView:setInnerContainerSize(cc.size(scrollView:getInnerContainerSize().width, totalHeight));

    local iconNode = cc.CSLoader:createNode(itemPath);
    local widget = replaceNodeWithWidget(iconNode);

    local index = 1;
    for i = 1, tLineCount do
        for j = 1, maxGridColumn do

            if index > totalNum then
                break;
            end

            local child = widget:clone();
            child:setName(itemName .. index);

            local x = (j - 1) * (itemW + itemWGap) + itemW / 2 + leftWGap;
            local y = totalHeight - (i * itemH + ( i - 1) * itemHGap)  + itemH / 2 - topHGap;

            point:registerItemTouchEvent(child);
            index = index + 1;

            child:setPositionX(x);
            child:setPositionY(y);

            scrollView:addChild(child)
            table.insert(scrollView.rows, child)
        end
    end
end

-- 获取旧界面相对于新界面的高度相对于宽度缩放
local function getNewHeightW(topGap,bottomGap)
    local w = AlignM.frameSize.width;
    local h = AlignM.frameSize.height;
    local tScaleX = w / DESIGN_WIDTH;

    -- 新高度
    local newScrollViewHeight = h / tScaleX - topGap - bottomGap;

    return newScrollViewHeight, tScaleX
end

-- 设置ScrollView新屏幕的宽高及原点
function scrollViewNewPos(scrollView,topGap,bottomGap)
    local newScrollViewHeight = getNewHeightW(topGap,bottomGap);
    local scrollViewSize = scrollView:getContentSize();
    scrollView:setContentSize(scrollViewSize.width, newScrollViewHeight);
end


------------------------------------------------------------------
-- @param panel             容器
-- @param itemPath          需要加载item节点的路径
-- @param topHGap           item顶部的间隙
-- @param leftWGap          item左边的间隙
-- @param itemWGap          item横向间距
-- @param itemHGap          item纵向间距
-- @param itemH             item的高度
-- @param itemW             item的宽度
-- @param maxGridColumn     一行最大的格数
-- @param totalNum          item总个数
-- @param itemName          子控件的名字 默认后面 1 2 3 4 ...
function drawPanelView(point, panel, itemPath, topHGap, leftWGap, itemWGap, itemHGap, itemW, itemH, maxGridColumn, totalNum, itemName)
    --总行数
    local tLineCount = math.ceil(totalNum / maxGridColumn);

    -- 先计算总高度
    local totalHeight = tLineCount * (itemH + itemHGap) - itemHGap + (topHGap * 2);

    -- 设置panel尺寸
    panel:setContentSize(panel:getContentSize().width, totalHeight);


    local iconNode = cc.CSLoader:createNode(itemPath);
    local widget = replaceNodeWithWidget(iconNode);

    local index = 1;
    for i = 1, tLineCount do
        for j = 1, maxGridColumn do

            if index > totalNum then
                break;
            end

            local child = widget:clone();
            child:setName(itemName .. index);

            local x = (j - 1) * (itemW + itemWGap) + itemW / 2 + leftWGap;
            local y = totalHeight - (i * itemH + ( i - 1) * itemHGap)  + itemH / 2 - topHGap;


            point:registerItemTouchEvent(child);
            index = index + 1;

            child:setPositionX(x);
            child:setPositionY(y);

            panel:addChild(child);

        end
    end
end

------------------------------------------------------------------
-- @param panel             翻页容器
-- @param itemPath          需要加载item节点的路径
-- @param topHGap           item顶部的间隙
-- @param leftWGap          item左边的间隙
-- @param itemWGap          item横向间距
-- @param itemHGap          item纵向间距
-- @param itemH             item的高度
-- @param itemW             item的宽度
-- @param maxGridColumn     一行最大的格数
-- @param pageTotalNum      一页总个数
-- @param totalNum          item总个数
-- @param itemName          子控件的名字 默认后面 1 2 3 4 ...
-- -- @param pageName       页面的名字 默认后面 1 2 3 4 ...
function drawPagePanelView(point, panel, itemPath, topHGap, leftWGap, itemWGap, itemHGap, itemW, itemH, maxGridColumn, pageTotalNum, totalNum, itemName,pageName)

    local pageCount = math.ceil(totalNum / pageTotalNum);
    --总行数
    local tLineCount = math.ceil(pageTotalNum / maxGridColumn);

    -- 先计算总高度
    local totalHeight = tLineCount * (itemH + itemHGap) - itemHGap + (topHGap * 2);

    -- 设置panel尺寸
    panel:setContentSize(panel:getContentSize().width, totalHeight);


    local iconNode = cc.CSLoader:createNode(itemPath);
    local widget = replaceNodeWithWidget(iconNode);


    local index = 1;
    for i = 1, pageCount do
        local layout = ccui.Layout:create();
        layout:setTag(pageName .. i);
        layout:setContentSize(panel:getContentSize());
        for j = 1, tLineCount do
            for k = 1, maxGridColumn do

                if index > totalNum then
                    break;
                end

                local child = widget:clone();
                child:setName(itemName .. index);

                local x = (k - 1) * (itemW + itemWGap) + itemW / 2 + leftWGap;
                local y = totalHeight - (j * itemH + ( j - 1) * itemHGap)  + itemH / 2 - topHGap;


--              point:registerItemTouchEvent(child);
                index = index + 1;

                child:setPositionX(x);
                child:setPositionY(y);

                --panel:addChild(child);
                layout:addChild(child);

            end
        end
        panel:addPage(layout);
    end

end

--获取顶部菜单高度
function getTopMenuHeight()
    local w = cc.Director:getInstance():getOpenGLView():getFrameSize().width;
    return 98 * w / DESIGN_WIDTH;
end

--获取底部菜单高度
function getBottomMenuHeight()
    local w = cc.Director:getInstance():getOpenGLView():getFrameSize().width;
    return 120 * w / DESIGN_WIDTH;
end



